/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package domain.controllers;

import domain.Entity.EntityGestor;
import domain.Entity.EntityProyecto;
import domain.Entity.EntityUsuario;
import domain.commands.ProyectoComando;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import managers.ProyectoManager;
import managers.UsuarioManager;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView;

/**
 *
 * @author jorge
 */
public class proyectoController extends SimpleFormController{
    
      public proyectoController() {
        setCommandClass(ProyectoComando.class);
  }
    
    ProyectoManager pm = ProyectoManager.getInstance();
    UsuarioManager um = UsuarioManager.getInstance();
   
    @Override
    protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, org.springframework.validation.BindException errors) throws Exception {

        ModelAndView mav = new ModelAndView();
        HttpSession session = request.getSession();
        ProyectoComando pc = (ProyectoComando) command;
        
        EntityUsuario gestor = (EntityUsuario) session.getAttribute("usuario");
        int horasMax = 0;
        if(!pc.getHorasMaximas().equals("")){
              horasMax = Integer.parseInt(pc.getHorasMaximas());
        }
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
        Date fecIni = sdf.parse(pc.getFechaIni());
        Date fecFin = sdf.parse(pc.getFechaFin());
        Double precio = 0.0;
        if(!pc.getPrecioHora().equals("")){
            precio = Double.valueOf(pc.getPrecioHora()).doubleValue();
        }
	
        if(estaProyecto(pc.getNombreProyecto())){
            
            mav.setView(new RedirectView("errorNombre.htm"));
        
        }else{
            
            EntityProyecto ep = new EntityProyecto();
            ep.setNombreProyecto(pc.getNombreProyecto());
            ep.setDescripcion(pc.getDescripcion());
            ep.setPrecio_hora(precio);
            ep.setHoras_maximas(horasMax);
            ep.setFecha_ini(fecIni);
            ep.setFecha_fin(fecFin);
            ep.setCompletado(false);
            Time t = new Time(0,0,0); 
            ep.setEg((EntityGestor) gestor);
    
            pm.addProyecto(ep);
            mav.setView(new RedirectView("mostrarProyectos.htm"));
            
        }
        return mav;
        
    }
    
    private boolean estaProyecto(String nombre){
        
         EntityProyecto ep = pm.get(nombre);
         
         return (ep.getNombreProyecto() != null) ;
        
    }
        
}